package gjbsh.bangong.ds.controller;

import java.math.BigDecimal;
import java.util.Date;
import java.util.UUID;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import gjbsh.bangong.ds.model.单位进站落户地址信息;
import gjbsh.bangong.ds.service.单位进站落户地址信息Service;
import gjbsh.support.BooleanMessage;
import gjbsh.support.JsonResult;
import gjbsh.support.StringHandle;



@RestController
@RequestMapping("dept_jinzhanluohudizhixinxi")
public class 单位进站落户地址信息Controller {

	private Logger logger = LoggerFactory.getLogger(getClass());

	@Autowired
	单位进站落户地址信息Service ddService;


	// 通过单位id查询全部落户地址信息（单位使用）
	@RequestMapping("find_by_deptid")
	public JsonResult<?> find_By_DeptId(@RequestParam("deptid") String ppDeptId){
		try {			
			return JsonResult.getSuccessResult(ddService.findByDeptId(ppDeptId));
		}catch(Exception e) {
			
			logger.error("单位进站落户地址信息Controller->find_by_deptid: "+e.getMessage());
			return JsonResult.getErrorResult("查询指定单位的落户地址信息失败 ");
		}
	}

	// 查找单位id查询有效的落户地址信息（博士后使用）
	@RequestMapping("find_isvalid")
	public JsonResult<?> find_IsValid(@RequestParam("deptid") String ppDeptId){
		try {			
			return JsonResult.getSuccessResult(ddService.findIsValid(ppDeptId));
		}catch(Exception e) {
			
			logger.error("单位进站落户地址信息Controller->find_isvalid: "+e.getMessage());
			return JsonResult.getErrorResult("查询指定单位的落户地址信息失败 ");
		}
	}

	// 根据主键更改状态（是否有效）
	@RequestMapping("set_isvalid")
	public JsonResult<?> set_isvalid(
			@RequestParam("id") String ppId,
			@RequestParam("isvalid") BigDecimal ppIsValid){
		try {	
			// 查询该落户地址
			单位进站落户地址信息 mm单位进站落户地址信息 = ddService.findById(ppId);
			if(mm单位进站落户地址信息 == null) {
				return JsonResult.getErrorResult("该落户地址不存在");
			}

			mm单位进站落户地址信息.set是否有效(ppIsValid);

			// 修改
			boolean mmIsok = ddService.modify(mm单位进站落户地址信息);

			if(mmIsok) {
				return JsonResult.getSuccessResult("更改状态成功");
			}else {
				return JsonResult.getErrorResult("更改状态失败");
			}

		}catch(Exception e) {
			
			logger.error("单位进站落户地址信息Controller->set_isvalid: "+e.getMessage());
			return JsonResult.getErrorResult("修改指定的落户地址信息状态失败 ");
		}
	}

	// 根据id查找记录
	@RequestMapping("find_custom_one")
	public JsonResult<?> find_custom_one(
			@RequestParam("id") String ppId){
		try {			
			return JsonResult.getSuccessResult(ddService.findCustomOne(ppId));
		}catch(Exception e) {
			
			logger.error("单位进站落户地址信息Controller->find_custom_one: "+e.getMessage());
			return JsonResult.getErrorResult("查询指定的落户地址信息失败 ");
		}
	}
	
	// 添加
	@RequestMapping("add")
	public JsonResult<?> add(
			@RequestParam("danweiid") String ppDeptId,
			@RequestParam("biaoshimingcheng") String ppBiaoshimingcheng,
			@RequestParam("jinzhanluohudidiquid") String ppJinzhanluohudidiquId,
			@RequestParam("jinzhanluohudizhi") String ppJinzhanluohudizhi,
			@RequestParam("gonganjushoulijiguan") String ppGonganjushoulijiguan,
			@RequestParam("paichusuo") String ppPaichusuo,
			@RequestParam("shengfen") String ppShengfen,
			@RequestParam("chengshi") String ppChengshi){
		try {	
			if ("".equals(ppDeptId)) {
				return JsonResult.getErrorResult("单位id不能为空！");
			}

			// 赋值
			单位进站落户地址信息 mm单位进站落户地址信息 = new 单位进站落户地址信息();
			mm单位进站落户地址信息.setId(UUID.randomUUID().toString());
			mm单位进站落户地址信息.set创建时间(new Date());
			mm单位进站落户地址信息.set单位id(ppDeptId);
			mm单位进站落户地址信息.set是否有效(BigDecimal.ONE);

			BooleanMessage mmBooleanMessage = checkInputData(mm单位进站落户地址信息,ppBiaoshimingcheng,ppJinzhanluohudidiquId,ppJinzhanluohudizhi,ppGonganjushoulijiguan,ppPaichusuo,ppShengfen,ppChengshi);

			if(!mmBooleanMessage.isOk()) {
				return JsonResult.getErrorResult(mmBooleanMessage.getMessage().toString());
			}

			// 添加
			boolean mmIsok = ddService.add(mm单位进站落户地址信息);

			if(mmIsok) {
				return JsonResult.getSuccessResult("添加成功！");
			}else {
				return JsonResult.getErrorResult("添加失败！");
			}

		}catch(Exception e) {
			
			logger.error("单位进站落户地址信息Controller->add: "+e.getMessage());
			return JsonResult.getErrorResult("添加落户地址信息失败 ");
		}
	}

	// 修改
	@RequestMapping("modify")
	public JsonResult<?> modify(
			@RequestParam("id") String ppId,
			@RequestParam("biaoshimingcheng") String ppBiaoshimingcheng,
			@RequestParam("jinzhanluohudidiquid") String ppJinzhanluohudidiquId,
			@RequestParam("jinzhanluohudizhi") String ppJinzhanluohudizhi,
			@RequestParam("gonganjushoulijiguan") String ppGonganjushoulijiguan,
			@RequestParam("paichusuo") String ppPaichusuo,
			@RequestParam("shengfen") String ppShengfen,
			@RequestParam("chengshi") String ppChengshi){
		try {							
			
			if ("".equals(ppId)) {
				return JsonResult.getErrorResult("id不能为空！");
			}

			// 查询该落户地址
			单位进站落户地址信息 mm单位进站落户地址信息 = ddService.findById(ppId);
			if(mm单位进站落户地址信息 == null) {
				return JsonResult.getErrorResult("该落户地址不存在！");
			}
			
			BooleanMessage mmBooleanMessage = checkInputData(mm单位进站落户地址信息,ppBiaoshimingcheng,ppJinzhanluohudidiquId,ppJinzhanluohudizhi,ppGonganjushoulijiguan,ppPaichusuo,ppShengfen,ppChengshi);

			if(!mmBooleanMessage.isOk()) {
				return JsonResult.getErrorResult(mmBooleanMessage.getMessage().toString());
			}

			// 修改
			boolean mmIsok = ddService.modify(mm单位进站落户地址信息);

			if(mmIsok) {
				return JsonResult.getSuccessResult("保存修改成功！");
			}else {
				return JsonResult.getErrorResult("保存修改失败！");
			}

		}catch(Exception e) {
			
			logger.error("单位进站落户地址信息Controller->modify: "+e.getMessage());
			return JsonResult.getErrorResult("修改指定的落户地址信息失败 ");
		}
	}

	// 检查数据
	private BooleanMessage checkInputData(单位进站落户地址信息 mm单位进站落户地址信息, String ppBiaoshimingcheng,
			String ppJinzhanluohudidiquId, String ppJinzhanluohudizhi,String ppGonganjushoulijiguan,String ppPaichusuo,String ppShengfen,String ppChengshi) {
		ppBiaoshimingcheng = ppBiaoshimingcheng.trim();
		ppJinzhanluohudidiquId = ppJinzhanluohudidiquId.trim();
		ppJinzhanluohudizhi = ppJinzhanluohudizhi.trim();

		// 判空
		if ("".equals(ppBiaoshimingcheng)) {
			return BooleanMessage.getErrorMessage("标识名称不能为空！");
		}	
		
			
		if ("".equals(ppJinzhanluohudizhi)) {
			return BooleanMessage.getErrorMessage("落户详细地址不能为空！");
		}

		if ("".equals(ppGonganjushoulijiguan)) {
			return BooleanMessage.getErrorMessage("公安局受理机关不能为空！");
		}
		
		if ("".equals(ppPaichusuo)) {
			return BooleanMessage.getErrorMessage("派出所不能为空！");
		}
		
		if ("".equals(ppShengfen)) {
			return BooleanMessage.getErrorMessage("省份不能为空！");
		}
		
//		if ("".equals(ppChengshi)) {
//			return BooleanMessage.getErrorMessage("城市不能为空！");
//		}
		if ("".equals(ppJinzhanluohudidiquId)) {
			return BooleanMessage.getErrorMessage("落户地址所在地区不能为空！");
		}
		
		// 长度检查
		if(StringHandle.getStringByteLength(ppBiaoshimingcheng) > 500) {
			return BooleanMessage.getErrorMessage("标识名称的长度不能大于500字节！");
		}		
		if(StringHandle.getStringByteLength(ppJinzhanluohudidiquId) > 50) {
			return BooleanMessage.getErrorMessage("落户地址所在地区id的长度不能大于50字节！");
		}		
		if(StringHandle.getStringByteLength(ppJinzhanluohudizhi) > 500) {
			return BooleanMessage.getErrorMessage("落户详细地址的长度不能大于500字节！");
		}	

		if(StringHandle.getStringByteLength(ppGonganjushoulijiguan) > 100) {
			return BooleanMessage.getErrorMessage("公安局受理机关的长度不能大于100字节！");
		}	
		
		if(StringHandle.getStringByteLength(ppPaichusuo) > 100) {
			return BooleanMessage.getErrorMessage("派出所的长度不能大于100字节！");
		}	
		
		if(StringHandle.getStringByteLength(ppShengfen) > 50) {
			return BooleanMessage.getErrorMessage("省份的长度不能大于50字节！");
		}
		
		if(StringHandle.getStringByteLength(ppChengshi) > 50) {
			return BooleanMessage.getErrorMessage("城市的长度不能大于50字节！");
		}
		

		mm单位进站落户地址信息.set标识名称(ppBiaoshimingcheng);
		mm单位进站落户地址信息.set进站落户地址(ppJinzhanluohudizhi);
		mm单位进站落户地址信息.set进站落户地所在地区id(ppJinzhanluohudidiquId);
		mm单位进站落户地址信息.set公安局受理机关(ppGonganjushoulijiguan);
		mm单位进站落户地址信息.set派出所(ppPaichusuo);
		mm单位进站落户地址信息.set落户省份(ppShengfen);
		mm单位进站落户地址信息.set落户城市(ppChengshi);
		
		return BooleanMessage.getSuccessMessage(mm单位进站落户地址信息);
	}
	
	/**
	 * @author yaolongjun
	 * @description	绑定可选择的进站迁户地址（单位维护的） 
	 */
	@RequestMapping("find_valid_by_deptid")
	public JsonResult<?> find_valid_by_deptid(@RequestParam("deptid")String ppDeptId){
		try {
			if("".equals(ppDeptId)) {
				return JsonResult.getErrorResult("单位ID不能为空");
			}
			return JsonResult.getSuccessResult(ddService.findValidByDeptId(ppDeptId));
		} catch (Exception e) {
			logger.error("单位进站落户地址信息Controller->find_valid_by_deptid: ",e.getMessage());
			return JsonResult.getErrorResult("查询指定单位的落户地址信息失败 ");
		}
	}


}
